import os
import sys

sys.path.append(os.path.abspath(os.path.join(__file__, "..", "..", "src")))

import argparse

from medical_ner.utils.param import Param


def t0():
    parser = argparse.ArgumentParser()
    parser.add_argument("-device", help="运行设备:cpu,cuda0,cuda1...", required=False, type=str, default='cpu')
    parser.add_argument("-summary_log_dir", help="日志路径", required=False, type=str, default=r".\outputs\summary")
    parser.add_argument("-model_save_dir", help="模型存储路径", required=False, type=str, default=r".\outputs\models\ckpt")
    parser.add_argument("-data_path", help="数据文件路径", required=False, type=str, default=r"..\datas\sentence_tag_small")
    parser.add_argument("-vocab_size", help="给定词汇表大小，但是当进行模型迁移的时候，该参数无效.", required=False, type=int, default=30522)
    parser.add_argument("-lm_name", help="给定语言模型的基地,可选:BertLanguageModel...", required=False, type=str, default='BertLanguageModel')
    parser.add_argument("-resume", action='store_const', const=True, default=False, help='模型恢复训练，要求模型输出路径必须是一致的。')
    args = parser.parse_args()
    print("args: '{}'".format(args))
    print(type(args))
    print(args.device)

    param = Param(vars(args))
    print(f"日志路径:{param.data_path}")

    print(param.bert_config.vocab_size)

    print(param.to_dict())

    # 保存模型
    param.save()

    # 加载新参数
    new_param = Param.load(r".\outputs\models")
    print(param.to_dict() == new_param.to_dict())


if __name__ == '__main__':
    t0()
